// 对话管理和监控端到端测试
describe('对话管理和监控', () => {
  beforeEach(() => {
    cy.login();
    cy.visit('/conversations');
    cy.waitForLoading();
  });

  it('应该正确显示对话列表', () => {
    // 验证页面标题
    cy.shouldHavePageTitle('对话管理');
    
    // 验证表格显示
    cy.getTableRows().should('have.length.greaterThan', 0);
    
    // 验证搜索功能
    cy.searchInTable('你好');
    cy.shouldHaveTableRow('你好');
    
    // 验证刷新功能
    cy.refreshTable();
    cy.waitForLoading();
    cy.getTableRows().should('have.length.greaterThan', 0);
  });

  it('应该能够查看对话详情', () => {
    // 点击详情按钮
    cy.clickTableActionButton(0, '详情');
    
    // 验证详情页面显示
    cy.shouldHavePageTitle('对话详情');
    
    // 验证对话内容显示
    cy.get('[data-cy="conversation-content"]').should('be.visible');
    cy.get('[data-cy="user-input"]').should('be.visible');
    cy.get('[data-cy="agent-response"]').should('be.visible');
    
    // 验证元数据显示
    cy.get('[data-cy="conversation-metadata"]').should('be.visible');
    cy.get('[data-cy="token-count"]').should('be.visible');
    cy.get('[data-cy="duration"]').should('be.visible');
    
    // 返回列表
    cy.get('[data-cy="back-button"]').click();
    cy.url().should('include', '/conversations');
  });

  it('应该能够搜索和筛选对话', () => {
    // 打开高级搜索
    cy.get('[data-cy="advanced-search"]').click();
    
    // 设置搜索条件
    cy.fillForm({
      'agentId': 'agent-1',
      'status': 'completed',
      'dateRange': '2024-01-01,2024-01-31',
      'minTokens': 100,
      'maxTokens': 1000,
    });
    
    // 执行搜索
    cy.get('[data-cy="search-button"]').click();
    
    // 验证搜索结果
    cy.waitForLoading();
    cy.getTableRows().should('have.length.greaterThan', 0);
  });

  it('应该能够导出对话记录', () => {
    // 点击导出按钮
    cy.get('[data-cy="export-button"]').click();
    
    // 选择导出格式
    cy.selectDropdownItem('[data-cy="export-menu"]', 'JSON');
    
    // 验证文件下载
    cy.readFile('cypress/downloads/conversations.json').should('exist');
  });

  it('应该能够批量删除对话', () => {
    // 选择多个对话
    cy.get('[data-cy="select-all-checkbox"]').check();
    
    // 批量删除
    cy.get('[data-cy="batch-delete"]').click();
    cy.confirmModal();
    
    // 验证删除成功
    cy.shouldHaveSuccessMessage('批量删除成功');
  });

  it('应该能够查看对话统计', () => {
    // 点击统计按钮
    cy.get('[data-cy="statistics-button"]').click();
    
    // 验证统计页面显示
    cy.shouldHavePageTitle('对话统计');
    
    // 验证统计图表
    cy.get('[data-cy="daily-conversations-chart"]').should('be.visible');
    cy.get('[data-cy="token-usage-chart"]').should('be.visible');
    cy.get('[data-cy="response-time-chart"]').should('be.visible');
    
    // 验证统计数据
    cy.get('[data-cy="total-conversations"]').should('be.visible');
    cy.get('[data-cy="average-tokens"]').should('be.visible');
    cy.get('[data-cy="success-rate"]').should('be.visible');
  });

  it('应该能够实时监控对话', () => {
    // 访问实时监控页面
    cy.visit('/conversations/monitoring');
    
    // 验证监控页面显示
    cy.shouldHavePageTitle('实时对话监控');
    
    // 验证实时数据
    cy.get('[data-cy="real-time-conversations"]').should('be.visible');
    cy.get('[data-cy="active-users"]').should('be.visible');
    cy.get('[data-cy="system-load"]').should('be.visible');
    
    // 验证实时图表
    cy.get('[data-cy="real-time-chart"]').should('be.visible');
  });

  it('应该能够查看对话分析', () => {
    // 点击分析按钮
    cy.get('[data-cy="analysis-button"]').click();
    
    // 验证分析页面显示
    cy.shouldHavePageTitle('对话分析');
    
    // 验证分析结果
    cy.get('[data-cy="sentiment-analysis"]').should('be.visible');
    cy.get('[data-cy="topic-analysis"]').should('be.visible');
    cy.get('[data-cy="quality-analysis"]').should('be.visible');
    
    // 验证分析图表
    cy.get('[data-cy="sentiment-chart"]').should('be.visible');
    cy.get('[data-cy="topic-distribution"]').should('be.visible');
  });

  it('应该能够设置对话告警', () => {
    // 访问告警设置页面
    cy.visit('/conversations/alerts');
    
    // 验证告警设置页面显示
    cy.shouldHavePageTitle('对话告警设置');
    
    // 设置告警规则
    cy.fillForm({
      'maxResponseTime': 5000,
      'maxTokens': 10000,
      'errorRate': 5,
      'notificationEmail': 'admin@example.com',
    });
    
    // 保存设置
    cy.get('[data-cy="save-button"]').click();
    
    // 验证设置成功
    cy.shouldHaveSuccessMessage('告警设置保存成功');
  });

  it('应该能够管理对话标签', () => {
    // 访问标签管理页面
    cy.visit('/conversations/tags');
    
    // 验证标签管理页面显示
    cy.shouldHavePageTitle('对话标签管理');
    
    // 创建新标签
    cy.get('[data-cy="create-tag-button"]').click();
    cy.get('[data-cy="tag-name"]').type '测试标签';
    cy.get('[data-cy="tag-color"]').click();
    cy.get('[data-cy="color-red"]').click();
    cy.get('[data-cy="submit-button"]').click();
    
    // 验证标签创建成功
    cy.shouldHaveSuccessMessage('标签创建成功');
  });

  it('应该能够对话回放', () => {
    // 点击回放按钮
    cy.clickTableActionButton(0, '回放');
    
    // 验证回放页面显示
    cy.shouldHavePageTitle('对话回放');
    
    // 验证回放控制
    cy.get('[data-cy="play-button"]').should('be.visible');
    cy.get('[data-cy="pause-button"]').should('be.visible');
    cy.get('[data-cy="stop-button"]').should('be.visible');
    
    // 验证回放进度
    cy.get('[data-cy="progress-bar"]').should('be.visible');
    
    // 开始回放
    cy.get('[data-cy="play-button"]').click();
    
    // 验证回放进行中
    cy.get('[data-cy="playing-indicator"]').should('be.visible');
  });

  it('应该能够导出对话报告', () => {
    // 点击报告按钮
    cy.get('[data-cy="report-button"]').click();
    
    // 验证报告生成页面显示
    cy.shouldHavePageTitle('对话报告');
    
    // 设置报告参数
    cy.fillForm({
      'dateRange': '2024-01-01,2024-01-31',
      'reportType': 'summary',
      'includeCharts': true,
    });
    
    // 生成报告
    cy.get('[data-cy="generate-button"]').click();
    
    // 验证报告生成成功
    cy.shouldHaveSuccessMessage('报告生成成功');
    
    // 下载报告
    cy.get('[data-cy="download-button"]').click();
    cy.readFile('cypress/downloads/conversation-report.pdf').should('exist');
  });

  it('应该能够处理错误对话', () => {
    // 筛选错误对话
    cy.fillForm({
      'status': 'error',
    });
    cy.get('[data-cy="search-button"]').click();
    
    // 验证错误对话显示
    cy.getTableRows().should('have.length.greaterThan', 0);
    
    // 查看错误详情
    cy.clickTableActionButton(0, '错误详情');
    
    // 验证错误详情显示
    cy.shouldHaveModal('错误详情');
    cy.get('[data-cy="error-message"]').should('be.visible');
    cy.get('[data-cy="error-stack"]').should('be.visible');
    
    // 关闭详情
    cy.closeModal();
  });

  it('应该能够批量重新处理对话', () => {
    // 选择错误的对话
    cy.get('[data-cy="conversation-checkbox"]').first().check();
    
    // 批量重新处理
    cy.get('[data-cy="batch-reprocess"]').click();
    cy.confirmModal();
    
    // 验证处理成功
    cy.shouldHaveSuccessMessage('批量重新处理成功');
  });

  it('应该能够设置对话保留策略', () => {
    // 访问保留策略页面
    cy.visit('/conversations/retention');
    
    // 验证保留策略页面显示
    cy.shouldHavePageTitle('对话保留策略');
    
    // 设置保留策略
    cy.fillForm({
      'retentionPeriod': 90,
      'autoDelete': true,
      'archiveBeforeDelete': true,
    });
    
    // 保存策略
    cy.get('[data-cy="save-button"]').click();
    
    // 验证策略保存成功
    cy.shouldHaveSuccessMessage('保留策略保存成功');
  });
});